#include "widget.h"
#include "ui_widget.h"
#include<QMessageBox>
#include<QFileDialog>
#include<QFile>
#include<QDebug>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    serialplotThread = new QThread(this);
    serial.moveToThread(serialplotThread);  //将串口发送接收page移动到线程中去
    serialplotThread->start();                  //启动线程
    qRegisterMetaType<SerialPlot::COMINFO>("SerialPlot::COMINFO"); //注册结构体




    //串口部分  连接部分
    connect(ui->serialUI,&serialWidget::openSerial_Signal,&serial,&SerialPlot::connectCOM);
    connect(ui->serialUI,&serialWidget::closeSerial_Signal,&serial,&SerialPlot::closeCOM);
    connect(&serial,&SerialPlot::ScanTimeSignals,ui->serialUI,&serialWidget::scanCOM_Slots);
    connect(&serial,&SerialPlot::serialState,ui->serialUI,&serialWidget::serialIsConnect_Slots);




    connect(&serial,&SerialPlot::readSignals,ui->textUI,&textWidget::textdisplay_RecvData);  //text   接收显示数据
    connect(ui->textUI,&textWidget::textdisplay_SendData,&serial,&SerialPlot::send);         //textUI 发送数据



    //发送文件
    connect(ui->fileUI,&filewidget::sendData,&serial,&SerialPlot::send);         //textUI 发送数据



    //电机部分
    connect(&serial,&SerialPlot::readSignals,ui->motorUI,&motorWidget::readResponse);  //text   接收显示数据
    connect(ui->motorUI,&motorWidget::sendData,&serial,&SerialPlot::send);

    connect(ui->comboBox,&QComboBox::currentTextChanged,this,[=](const QString &name){
        if(QString::compare(name,"文本模式") == 0)
            ui->stackedWidget->setCurrentWidget(ui->textUI);
        else if(QString::compare(name,"文件模式") == 0)
            ui->stackedWidget->setCurrentWidget(ui->fileUI);
        else if(QString::compare(name,"电机模式") == 0)
            ui->stackedWidget->setCurrentWidget(ui->motorUI);
    });

    update();
}

Widget::~Widget()
{
    serialplotThread->quit();
    serialplotThread->wait();
    delete ui;
}
#include<QPainter>
void Widget::paintEvent(QPaintEvent *event){
    QPainter painter(this);
    uint8_t *data;
    data = font.getFont16Data(0x6211);
    for(int i = 0; i < font.h;i++)
        for(int j= 0 ;j<font.w/8;j+=1){
            for(int K=0;K<8;K++){
                char datass = data[i * font.w/8 + j];
                if(datass & (0x80 >> K))
                    painter.drawPoint(j*8+K+100,i+100);
            }
        }
}

void Widget::serialplotCOMcallback(QStringList comlist){

}


void Widget::serialplotBtnOpenClose(){

}

void Widget::serialplotSendData(){
   // QString text = ui->textEdit->toPlainText();
  //  qDebug() << text;

  //  emit sendCom(text.toUtf8().data(),text.toUtf8().size());
    //serialplot.send(text.toUtf8().data(),text.toUtf8().size());
}

void Widget::serialRecvData(QByteArray data){
//    if(serialplot.hex_display == true){
//        char *hex = data.data();
//        for(int i =0;i<data.size();i++){
//            ui->textBrowser->insertPlainText(QString("%1 ").arg((unsigned)hex[i],0,16));
//        }
//    }else{
//        ui->textBrowser->insertPlainText(QString::fromUtf8(data));
//    }
//    ui->textBrowser->moveCursor(ui->textBrowser->textCursor().End);
}





























